// hdu5802
// 题意：
// 给定数非负整数p, q(0<=10^9)，现在要把p变成q，每次可以有三种操作，
//  1. 把p增加1;
//  2. 维持p不变（暂停一次）；
//  3. 如果上一次是3操作且减少了x，那么这次把p减少2x。
// 问最少多少操作把p变成q，注意，p，q都不能为负数，如果某次p变成负数，
// 那么它是0。
//
// 题解：
// 贪心，其实很直观，但是不会证明。
// 就是连续减少到第一个比q大的数为止，然后考虑继续减还是暂停一次。
// 首先某次如果比q小那么只能增加。
// 但是因为可以有暂停和+1操作（两个都能起到暂停效果），所以我们要记录
// 暂停了几次，如果到比q小的时候，我们可以通过+1操作来抵消一部分比q小
// 的部分。
//
// 然后要注意p时刻最小只能是0。
//
// ml:run = time -p $bin < input > output
// ml:ccf += -g
// ml:opt = 0
#include <iostream>
#include <algorithm>

using ll = long long;
ll p, q;

int dfs(ll p, int pause = 0)
{
    p = std::max(0ll, p);
    if (p <= q) return std::max(0ll, q - p - pause);
    int len = 1;
    for (; p - (1ll << len) + 1 > q; len++);
    int cost1 = len + dfs(p - (1ll << len) + 1, pause);
    int cost2 = len != 1 ? len + dfs(p - (1ll << (len - 1)) + 1, pause + 1) : cost1;
    return std::min(cost1, cost2);
}

int main()
{
    std::ios_base::sync_with_stdio(false);
    int T; std::cin >> T;
    while (T--) {
        std::cin >> p >> q;
        std::cout << dfs(p) << "\n";
    }
}

